// then1  then1-1 then2
const Promise = require('./p');

Promise.resolve().then(() => {
        console.log('then1');
        Promise.resolve().then(() => {
            console.log('then1-1');
            return new Promise((res,rej)=>{
                res(1)
            }).then().then()
        }).then(() => {
            console.log('then1-2')
        })
    })
    .then(() => {
        console.log('then2');
    })
    .then(() => {
        console.log('then3');
    })
    .then(() => {
        console.log('then4');
    })
    .then(() => {
        console.log('then5');
    })

// ecmascript中 promise的多余特点 1)Promise.resolve(promise的时候) 会直接将这个promise解析出来 
//                               2)一个promise返回一个promise 会产生两个then





// 第一天 将的promoise （高阶函数 （函数柯里化 - 将函数的执行逻辑更加细化 isType-> isString） 
// 反柯里化 （期望将一个函数的使用范围变大  Object.prototype.toString => toString()））
// 高阶函数  防抖函数（多次执行 最终只执行一次） 节流函数 (一直执行某个功能，但是按照频率触发) 基于高阶函数的

// promise Promise.resolve promise.finally Promise.all Promise.race promifiy  abort  延迟对象
// async + await = geneator + co (co实现原理)

// 回调函数 -》 类似同步的代码（执行的时候依旧是异步的）  promise缺陷就是依旧基于回调的，难免还是会出现嵌套问题  

// 
// new Promise(()=>{
//     resolve()
// }).then(()=>{
//     // ---------  返回一个空的promise  return  new Promise(()=>{})  可以就不会进行下面的then和catch
// }).then(()=>{
//     console.log('last')
// }).catch(()=>{
//     console.log('catch')
// })


// node中概念 能做什么事。。。 ssr  中间层 工具
// node中的global  和 浏览器的window 
// node中实现了模块化机制  会给每个文件增加一个函数 函数中有五个参数 exports module require __dirname __filename



// 核心模块 fs (readFileSync exitsSync) path (resolve,join,dirname) vm (runInThisContext, eval , newFunction 在模板引擎中经常使用)

// new Function 在模板引擎中的使用是非常多的 （实现一个自己的模板引擎）

// vue 中的  {{}} 模板引擎  `${}`  ejs jade underscore handlebar pug nunjuncks。。